package com.liwy3.code.easy;

/**
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * <p>
 * 如果不存在公共前缀，返回空字符串""。
 * <p>
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：strs = ["flower","flow","flight"]
 * 输出："fl"
 * 示例 2：
 * <p>
 * 输入：strs = ["dog","racecar","car"]
 * 输出：""
 * 解释：输入不存在公共前缀。
 * <p>
 * <p>
 * 提示：
 * <p>
 * 1 <= strs.length <= 200
 * 0 <= strs[i].length <= 200
 * strs[i] 仅由小写英文字母组成
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/longest-common-prefix
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class E3_LongestPrefix {

    public static String longestCommonPrefix(String str1, String str2) {

        int len1 = str1.length();
        int len2 = str2.length();
        int minLen = Math.min(len1, len2);
        int index = 0;
        while (index < minLen && str1.charAt(index) == str2.charAt(index)) {
            index++;
        }

        return str1.substring(0, index);
    }

    public static void main(String[] args) {
        String[] strs = {"dog", "racecar", "car"};
        String prefix = new E3_LongestPrefix().longestCommonPrefix(strs);
        System.out.println(prefix);
    }

    public String longestCommonPrefix(String[] strs) {

        String prefix = "";
        for (int i = 0; i < strs.length; i++) {
            if (i == 0) {
                prefix = strs[i];
            } else {
                prefix = longestCommonPrefix(prefix, strs[i]);
            }

        }
        return prefix;
    }
}
